# -*- coding: utf-8 -*-

import os
import glob
import subprocess

#
# 需要安装的工具：
# go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
# go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
#

# 需要生成代码的模块列表
module_list = ["../../services/media/api"]

# 获取当前文件目录
file_dir = os.path.dirname(os.path.abspath(__file__))

# 命令行工具路径
protoc_path = os.path.join(file_dir, 'protoc/bin/protoc.exe')

# 遍历模块生成代码
for module in module_list:
    # 生成代码的输出目录
    output_dir = os.path.join(file_dir, module)

    # 生成代码的spec文件路径
    spec_path = os.path.join(output_dir, 'api.proto')

    # 设置proto路径
    proto_dir = output_dir

    # 删除输出目录所有go文件（windows）
    go_files = glob.glob(os.path.join(output_dir, "*.go"))
    for go_file in go_files:
        os.remove(go_file)

    # 生成代码的命令
    try:
        result = subprocess.run([
            protoc_path,
            '--go_out=' + output_dir,
            '--go-grpc_out=' + output_dir,
            '--proto_path=' + proto_dir,
            spec_path
        ], check=True, capture_output=True, encoding='gbk')
        print(f"{module} generate success")
    except subprocess.CalledProcessError as e:
        print(f"Command failed for {module} with error:", e.stderr)